#!/bin/bash
:<<EOF
  getopts是Bash shell自带的命令行参数处理工具, 它的语法比较简单，只支持处理单个字母选项，例如-a、-b等。getopts只能处理短选
  项，也就是只能使用一个字母来表示选项，如果要处理长选项，需要编写更多的代码。另外, getopts处理命令行参数时会把选项和参数分
  别处理，不能处理连续的选项，例如-abc;
  正确使用方式：  bash chapter8-parameter/opt_parameter.sh -p 1234 -q 6778  -a 2222

  esac  是一个语法关键字, 它的唯一作用就是标记 case 语句的结束
  esac   |    case
  Symmetrical ! Oh my god !

EOF

#input paramters index
echo "OPTIND starts at $OPTIND"
#get paramters
while getopts ":p:q:" optname
do
case "$optname" in
        "p")          echo "Option $optname is specified,  and  value is  $OPTARG" ;;
        "q")          echo "Option $optname is specified,  and  value is  $OPTARG" ;;
        "?")
          echo "Unknown option $OPTARG"           #if 使用了其他未指定的参数 ， 这里将会执行 eg : bash opts.sh  -a 1234
          ;;
        ":")
          echo "No argument value for option $OPTARG"  #if 输入了指定的参数， 但是没有赋值， 这里将会执行  eg : bash opts.sh -p -q
          ;;
        *)
          # Should not occur
          echo "Unknown error while processing options"
          ;;
esac
echo "OPTION is now $OPTIND"
done



